# select 想要的列 from 表
# where 先从这张表中查询的行
# group by 分组
# having 对组过滤
# order by 排序
# limit 取一个区间

# select * from 表 group by 字段名
    # 分组 group by
    # 根据某个重复率比较高的字段进行的
    # 这个字段有多少种可能就分成多少个组
        # 根据性别分组 : 男的一组 女的一组
        # 根据部门分组 : 销售一组 教学一组 ...
    # 去重
    # 一旦分组了就不能对具体某一条数据进行操作了
        # 永远都是考虑这组xxx
    # group_concat : 只用来做最终的显示,不能作为中间结果操作其他数据
# 聚合函数
    # 99.99%的情况都是和分组一起用的
    # 如果没有和分组一起用,默认一整张表是一组
    # count(id)  / count(*) 计数 :每个组对应几条数据
    # max 求最大值: 这个组中某字段的最大值
    # min 求最大值: 这个组中某字段的最小值
    # avg 求平均值
    # sum 求和值

    #select min(hire_date) from employee
        # 求employee中所有人里最早入职的时间
    # select min(hire_date) from employee group by post
        # 求每个部门中入职最早的时间

# 练习
    # 求各部门薪资大于1w的人的个数
    # select * from employee where salary >10000;
    # select post,count(id) from employee where salary >10000 group by post;

# having 过滤条件
    # 就是一个对组进行筛选的条件
    # 要部门人数大于3个人的部门 count(id)>3
    # select post from employee group by post having count(id)>3;


    # having的问题 不建议你用
        # select id,emp_name,age from employee having age>20;
        # select id,emp_name from employee group by age having age>20;

# order by
    # order by 字段
    # order by 字段 asc
    # order by 字段 desc

    # order by 字段1,字段2
    # order by 字段 asc,字段2 desc
    # order by 字段 desc,字段2 asc
    # order by 字段 desc,字段2 desc

# limit
    # 1.显示分页
        # limit m,n
            # 表示从m+1开始,取n条
            # limit 0,6 表示从1开始取6条
            # limit 6,6 表示从7开始取6条
            # limit 12,6 表示从13开始取6条
            # limit 18,6 表示从19开始取6条
    # 2.取前n名
        # limit n   m默认为0
        # 跟order by一起用
    # limit n offset m :从m+1开始,取n条


# select 想要的列 from 表
# where 先从这张表中查询的行
# group by 分组
# having 对组过滤
# order by 排序
# limit 取一个区间